Networks often provide a multi-session environment for delivering a mixture of various types of critical and non-critical data, such as acknowledgments, e-mail messages, file transfers, database queries, voice over IP, video conferencing and multimedia, etc. Prior to transfer of the data into the network, this data is packaged into one or a plurality of units, i.e. packets. A stream of packets having various data may be acquired by the packet's final designation at the terminal end of a communication path and, at times, also by intermediate nodes along the path. The term “packet,” as referred to herein, is not intended to imply use of any particular communications protocol.
The transfer of large amounts of data places a demand on a network's infrastructure, which may result in slowed receipt and consequently deferred processing of data once received. Delays may be caused, inter alia, by congestion along the communication path and the time a packet spends in a queue waiting to be processed.
Oftentimes, packets are removed from the queue and processed in the sequential order in which they were inserted into the queue or according to pre-designated priorities. However, periodically it is useful to change the priority of processing certain packets of data once the packets are received.
One example of a packet that may benefit from expedited processing is an acknowledgment packet received in response to data sent. An acknowledgment is transmitted to an original data sender by a receiver station to confirm that data was successfully obtained. In order to reduce congestion of packets at the sending end, some network systems or protocols, e.g. Transmission Control Protocol (TCP), limit dispatch to a number of bytes that a receiver station may accept over a given time. Upon receipt of the acknowledgement, the sender is permitted to release more data.
The maximum throughput over a network is a product of the delay created by a receiver station's window size divided by a round trip time (RTT). The RTT is the length of time before an acknowledgment can be received for any given data sent. However, acknowledgment packets are generally queued behind other previously received packets. The resulting latency in processing acknowledgments is especially significant in high throughput environments, such as a server, where each connection to the receiver adds an extra load and, as a consequence, incrementally increases the RTT of all connections on the link. Thus, the throughput of each connection is reduced.
In addition to acknowledgments, other data may benefit from priority processing. An end-to-end transit delay encountered for individual packets has an additive effect on a user's perceived response time for transfer of a body of data. For example, delayed processing of packets having streaming data, such as teleconferencing, video and audio data usually results in a jittery effect for the streaming data, thereby reducing the quality of the resulting received data.
However, most current methods to prioritize packets do not permit different priorities for each packet carrying a portion of a body of data. Rather than differentiating each packet of a data stream, most present prioritization methods label all packets that transport a body of data, e.g. a file, as the same priority. Thus, a priority value in these prior systems represents the file priority based on overall packet content, rather than an individual packet's ranking of precedence.
Furthermore, current stations that receive packets are limited in their ability to reorder the processing of packets. It is often useful for the receiving end of data sent across a network to process packets in a different priority than the priorities that had been set at the point of transmission. Moreover, systems in which the transmitter stations set priorities often require that all other stations along the network path to be compatible with the transmitter station priority system. Thus, any changes made to the priority system must also be made to these other nodes.
In the case of a router or switch, if prioritization occurs, the priority may be set after the packet is given to a protocol stack and just before the packet is relayed back into the network. There may be heavy reliance on software to designate priorities, creating an undue burden on the station's central processing unit and adding to the complexity of the processing procedures.
In general, the shortcomings of the currently available methods for prioritizing network information are inadequate for creating different priorities on individual packet members carrying a body of data, regardless of packet content. In particular, previous methods do not efficiently permit a receiver station's hardware to be used in controlling the order of processing select packets.